package com.yuhs.zixing.study.design.pattern.dp001.principle.p04.liskov.substitution;

/**
 * @description
 * @author: yuhs
 * @date 2022/3/26 下午4:21
 */
public class LiskovSubstitutionDemo002 {

    public static void main(String[] args) {
        A002 a = new A002();
        System.out.println("11-2 = " + a.function(11, 2));
        System.out.println("----------------------------");
        B002 b = new B002();
        System.out.println("11-2 = " + b.function3(11, 2));

    }
}

/**
 * 创建一个更加基础的基类
 */
class Base002 {
    // 把更加基础的方法和成员写到 Base 类中
}

class A002 extends Base002 {
    public int function(int num1, int num2) {
        return num1 - num2;
    }
}

/**
 * B类 继承 Base 类
 * 增加了一个新功能：完成两个数相加，然后再加9，求和。
 * 如果B 要使用A类中的方法，使用组合
 */
class B002 extends Base002 {
    private A002 a = new A002();


    public int function(int num1, int num2) {
        return num1 + num2;
    }

    public int function2(int num1, int num2) {
        return function(num1, num2) + 9;
    }

    public int function3(int num1, int num2) {
        return this.a.function(num1, num2);
    }
}
